'use strict';

// 这里在做token的校验
module.exports = (options) => {
    // 这里接受的是 egg框架的 config上的jwt ！！我们将jwt挂载了 config 上
    return async function jwtErr(ctx, next) {
        // 从请求头中拿到token
        const token = ctx.request.header.authorization
        let decode;
        if (token && token !== null) {
            // 前端真的带了token来了
            try {




                // egg-jwt 封装的检验 token 的方法
                // options.secret 之前生成 token 时的秘钥，在 config 内定义的
                decode = ctx.app.jwt.verify(token, options.secret)

                // console.log('这里我想看看token检验的结果decode是什么:',decode); 
                //是用户信息
                //{ id: 4, username: 'aaa', exp: 1635821989, iat: 1635735589 }


                await next()
            } catch (err) {
                console.log(err);
                ctx.body = {
                    code: 401,
                    msg: 'token已过期,请重新登入',
                    data: null
                }
                return
            }
        } else {
            // 没有传 token 
            ctx.status = 200
            ctx.body = {
                code: 401,
                msg: 'token 不存在'
            }
            return
        }
    }
}